/**
 * @file    pc_comm_single_task.h
 * @brief   单向上报任务通信服务
 * @details This is the detail description.
 * @author  wang-haoyu
 * @date    2025年7月29日 (created)
 * @version 0.0.2
 * @par Copyright (C):
 *          HangZhou HuaYi Science and Technology Ltd. All Rights Reserved.
 * @par Encoding:
 *          GB2312
 * @par Description        :
 * 1. Hardware Descriptions:
 *      None.
 * 2. Program Architecture:
 *      None.
 * 3. File Usage:
 *      None.
 * 4. Limitations:
 *      None.
 * 5. Else:
 *      None.
 * @par Modification:
 * -# Date          : 2025年7月29日;
 * Revision         : 0.0.1;
 * Author           : wang-haoyu;
 * Contents         : first update
 */
 
/* =============================================================================
 *                                header files
 * ========================================================================== */
#ifndef __PC_COMM_SINGLE_TASK_H
#define __PC_COMM_SINGLE_TASK_H

#include "pc_comm_frame.h"

/* =============================================================================
 *                              macros & constants
 * ========================================================================== */

/* =============================================================================
 *                          data structure definitions
 * ========================================================================== */
typedef void (*pccomm_signle_task_pc_handler)(rt_device_t dev);

typedef int (*pccomm_signle_task_iacc_handler)(rt_uint8_t *buf,rt_uint8_t size);

typedef struct
{
	pc_comm_code_t func_code;
	pccomm_signle_task_pc_handler task_handler;
}pccomm_update_task_t;

typedef struct
{
	pc_comm_code_t func_code;
	pccomm_signle_task_iacc_handler task_handler;
}pccomm_ctrl_task_t;

/* =============================================================================
 *                         static variable definitions
 * ========================================================================== */

 /* =============================================================================
 *                         static function definitions
 * ========================================================================== */

/* =============================================================================
 *                         global function definitions
 * ========================================================================== */
/*
 * MCU->PC 单向上报任务轮询函数
 *
 * Parameter:
 *   Input:
 * 		-dev:数据发送驱动
 *   Output:
 * Returns:
 */
void pc_comm_single_update_task_processing(rt_device_t dev);

/*
 * PC-MCU 单项下发任务轮询函数函数
 *
 * Parameter:
 *   Input:
 * 		-*obj:通信数据帧句柄
 *   Output:
 * Returns:
 */
void pc_comm_single_set_task_processing(pc_comm_frame_t *obj);

/*
 * MCU->PC 电机状态反馈函数
 *
 * Parameter:
 *   Input:
 *   Output:
 * Returns:
 */
void pc_comm_single_func_iacc_chassis_status(rt_device_t dev);

/*
 * MCU->PC 外设状态反馈函数
 *
 * Parameter:
 *   Input:
 *   Output:
 * Returns:
 */
void pc_comm_single_func_iacc_peripheral_status(rt_device_t dev);

/*
 * MCU->PC 控制器状态反馈函数
 *
 * Parameter:
 *   Input:
 *   Output:
 * Returns:
 */
void pc_comm_single_func_iacc_controller_status(rt_device_t dev);

/*
 * PC->MCU 底盘通用输出设置函数
 *
 * Parameter:
 *   Input:
*		-buf:接收数据缓存区
 *		-size：数据长度
 *   Output:
 * Returns:
 *		-0：正常
 *		-其他：异常
 */
int pc_comm_single_func_multifunction_io_set(rt_uint8_t *buf,rt_uint8_t size);
/*
 * PC->MCU 底盘驱动器速度设置函数
 *
 * Parameter:
 *   Input:
*		-buf:接收数据缓存区
 *		-size：数据长度
 *   Output:
 * Returns:
 *		-0：正常
 *		-其他：异常
 */
int pc_comm_single_func_chassis_speed_set(rt_uint8_t *buf,rt_uint8_t size);

/*
 * PC->MCU 时间同步设置函数
 *
 * Parameter:
 *   Input:
*		-buf:接收数据缓存区
 *		-size：数据长度
 *   Output:
 * Returns:
 *		-0：正常
 *		-其他：异常
 */
int pc_comm_single_func_timestampsync(rt_uint8_t *buf,rt_uint8_t size);

/*
 * PC->MCU 灯带控制器设置函数
 *
 * Parameter:
 *   Input:
*		-buf:接收数据缓存区
 *		-size：数据长度
 *   Output:
 * Returns:
 *		-0：正常
 *		-其他：异常
 */
int pc_comm_single_func_light_bar_control(rt_uint8_t *buf,rt_uint8_t size);

#endif

/*******************************************************************************
 *                                  EOF
 ******************************************************************************/